Computing devices have hardware platforms on which a variety of components are coupled together to provide the functionality for the computing device. Commonly, computing devices include a processor, short term memory (volatile memory), and longer-term memory (nonvolatile storage). Typically one or more components on the hardware platform executes basic initial code stored in a read only memory (ROM), which allows the hardware platform to load firmware that controls the hardware components. The firmware then loads code and data (such as a host operating system) from storage into the volatile memory for execution by the processor.
Firmware is traditionally stored in separate components (e.g., a flash storage device) that add cost in terms of the components themselves, as well as additional design and manufacturing costs to put the components on the hardware platform. The ROM code is fixed in hardware and cannot replace the role of firmware on modern computing platforms. Thus, without the firmware on the hardware platform, the platform is traditionally unable to initiate operation. Furthermore, if the firmware code is somehow compromised by corruption or attack, there are limitations on the ability to perform recovery of the hardware platform.
Descriptions of certain details and implementations follow, including a description of the figures, which may depict some or all of the embodiments described below, as well as discussing other potential embodiments or implementations of the inventive concepts presented herein.